package Exception;

/**
 * ClassName:ExceptionDome012
 * Package:Exception
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/26-17:44
 * @Version:v1.0
 */
public class ExceptionDome012 {
    /*抛出处理
     * 1.throws(写在方法定义出,表示声明一个异常,告诉调用者,使用本方法可能会有哪些异常)
     *   格式:public void 方法()throws 异常类名1,异常类名2...{
     *         ....
     *       }
     * 编译时异常：必须要写
     * 运行时异常：可以不写
     * 2.throw(写在方法内,结束方法,手动抛出异常对象,交给调用者,方法中下面的代码不再执行l)
     * 格式：public void 方法(){
     *          throw new NullPointerException();
     *     }*/
    public static void main(String[] args) /*throws NullPointerException,ArrayIndexOutOfBoundsException*/ {
        //需求：定义一个方法求数组的最大值
//        int[] arr = {1, 2, 4, 5, 6, 7};
        int[] arr = {};

        int max = 0;
        try {
            max = getMax(arr);
        } catch (NullPointerException e) {
            System.out.println("空指针异常");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("索引越界异常");
        }
        System.out.println(max);

    }

    public static int getMax(int[] arr) {
        if (arr == null) {
            //手动创建一个异常对象,并把这个异常交给方法的调用者处理
            //此方法就会结束,下面的代码不会再执行了
            throw new NullPointerException();
        }
        if (arr.length == 0) {
            throw new ArrayIndexOutOfBoundsException();
        }
        System.out.println("看看我执行了吗");
        int max = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }
}
